home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 60 / IOPROG_60.ISO / soft / c++ / gsl-1.1.1-setup.exe / {app} / include / gsl / gsl_cblas.h < prev    next >
Encoding:
C/C++ Source or Header  |  2002-04-20  |  33.5 KB  |  607 lines

  1. /* blas/gsl_cblas.h
  2.  * 
  3.  * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
  4.  * 
  5.  * This program is free software; you can redistribute it and/or modify
  6.  * it under the terms of the GNU General Public License as published by
  7.  * the Free Software Foundation; either version 2 of the License, or (at
  8.  * your option) any later version.
  9.  * 
  10.  * This program is distributed in the hope that it will be useful, but
  11.  * WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.  * General Public License for more details.
  14.  * 
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to the Free Software
  17.  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  */
  19.  
  20. /* This is a copy of the CBLAS standard header.
  21.  * We carry this around so we do not have to
  22.  * break our model for flexible BLAS functionality.
  23.  */
  24.  
  25. #ifndef __GSL_CBLAS_H__
  26. #define __GSL_CBLAS_H__
  27. #include <stddef.h>
  28.  
  29. #undef __BEGIN_DECLS
  30. #undef __END_DECLS
  31. #ifdef __cplusplus
  32. #define __BEGIN_DECLS extern "C" {
  33. #define __END_DECLS }
  34. #else
  35. #define __BEGIN_DECLS           /* empty */
  36. #define __END_DECLS             /* empty */
  37. #endif
  38.  
  39. __BEGIN_DECLS
  40.  
  41. /*
  42.  * Enumerated and derived types
  43.  */
  44. #define CBLAS_INDEX size_t  /* this may vary between platforms */
  45.  
  46. enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102};
  47. enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113};
  48. enum CBLAS_UPLO {CblasUpper=121, CblasLower=122};
  49. enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132};
  50. enum CBLAS_SIDE {CblasLeft=141, CblasRight=142};
  51.  
  52. /*
  53.  * ===========================================================================
  54.  * Prototypes for level 1 BLAS functions (complex are recast as routines)
  55.  * ===========================================================================
  56.  */
  57. float  cblas_sdsdot(const int N, const float alpha, const float *X,
  58.                     const int incX, const float *Y, const int incY);
  59. double cblas_dsdot(const int N, const float *X, const int incX, const float *Y,
  60.                    const int incY);
  61. float  cblas_sdot(const int N, const float  *X, const int incX,
  62.                   const float  *Y, const int incY);
  63. double cblas_ddot(const int N, const double *X, const int incX,
  64.                   const double *Y, const int incY);
  65.  
  66. /*
  67.  * Functions having prefixes Z and C only
  68.  */
  69. void   cblas_cdotu_sub(const int N, const void *X, const int incX,
  70.                        const void *Y, const int incY, void *dotu);
  71. void   cblas_cdotc_sub(const int N, const void *X, const int incX,
  72.                        const void *Y, const int incY, void *dotc);
  73.  
  74. void   cblas_zdotu_sub(const int N, const void *X, const int incX,
  75.                        const void *Y, const int incY, void *dotu);
  76. void   cblas_zdotc_sub(const int N, const void *X, const int incX,
  77.                        const void *Y, const int incY, void *dotc);
  78.  
  79.  
  80. /*
  81.  * Functions having prefixes S D SC DZ
  82.  */
  83. float  cblas_snrm2(const int N, const float *X, const int incX);
  84. float  cblas_sasum(const int N, const float *X, const int incX);
  85.  
  86. double cblas_dnrm2(const int N, const double *X, const int incX);
  87. double cblas_dasum(const int N, const double *X, const int incX);
  88.  
  89. float  cblas_scnrm2(const int N, const void *X, const int incX);
  90. float  cblas_scasum(const int N, const void *X, const int incX);
  91.  
  92. double cblas_dznrm2(const int N, const void *X, const int incX);
  93. double cblas_dzasum(const int N, const void *X, const int incX);
  94.  
  95.  
  96. /*
  97.  * Functions having standard 4 prefixes (S D C Z)
  98.  */
  99. CBLAS_INDEX cblas_isamax(const int N, const float  *X, const int incX);
  100. CBLAS_INDEX cblas_idamax(const int N, const double *X, const int incX);
  101. CBLAS_INDEX cblas_icamax(const int N, const void   *X, const int incX);
  102. CBLAS_INDEX cblas_izamax(const int N, const void   *X, const int incX);
  103.  
  104. /*
  105.  * ===========================================================================
  106.  * Prototypes for level 1 BLAS routines
  107.  * ===========================================================================
  108.  */
  109.  
  110. /* 
  111.  * Routines with standard 4 prefixes (s, d, c, z)
  112.  */
  113. void cblas_sswap(const int N, float *X, const int incX, 
  114.                  float *Y, const int incY);
  115. void cblas_scopy(const int N, const float *X, const int incX, 
  116.                  float *Y, const int incY);
  117. void cblas_saxpy(const int N, const float alpha, const float *X,
  118.                  const int incX, float *Y, const int incY);
  119.  
  120. void cblas_dswap(const int N, double *X, const int incX, 
  121.                  double *Y, const int incY);
  122. void cblas_dcopy(const int N, const double *X, const int incX, 
  123.                  double *Y, const int incY);
  124. void cblas_daxpy(const int N, const double alpha, const double *X,
  125.                  const int incX, double *Y, const int incY);
  126.  
  127. void cblas_cswap(const int N, void *X, const int incX, 
  128.                  void *Y, const int incY);
  129. void cblas_ccopy(const int N, const void *X, const int incX, 
  130.                  void *Y, const int incY);
  131. void cblas_caxpy(const int N, const void *alpha, const void *X,
  132.                  const int incX, void *Y, const int incY);
  133.  
  134. void cblas_zswap(const int N, void *X, const int incX, 
  135.                  void *Y, const int incY);
  136. void cblas_zcopy(const int N, const void *X, const int incX, 
  137.                  void *Y, const int incY);
  138. void cblas_zaxpy(const int N, const void *alpha, const void *X,
  139.                  const int incX, void *Y, const int incY);
  140.  
  141.  
  142. /* 
  143.  * Routines with S and D prefix only
  144.  */
  145. void cblas_srotg(float *a, float *b, float *c, float *s);
  146. void cblas_srotmg(float *d1, float *d2, float *b1, const float b2, float *P);
  147. void cblas_srot(const int N, float *X, const int incX,
  148.                 float *Y, const int incY, const float c, const float s);
  149. void cblas_srotm(const int N, float *X, const int incX,
  150.                 float *Y, const int incY, const float *P);
  151.  
  152. void cblas_drotg(double *a, double *b, double *c, double *s);
  153. void cblas_drotmg(double *d1, double *d2, double *b1, const double b2, double *P);
  154. void cblas_drot(const int N, double *X, const int incX,
  155.                 double *Y, const int incY, const double c, const double  s);
  156. void cblas_drotm(const int N, double *X, const int incX,
  157.                 double *Y, const int incY, const double *P);
  158.  
  159.  
  160. /* 
  161.  * Routines with S D C Z CS and ZD prefixes
  162.  */
  163. void cblas_sscal(const int N, const float alpha, float *X, const int incX);
  164. void cblas_dscal(const int N, const double alpha, double *X, const int incX);
  165. void cblas_cscal(const int N, const void *alpha, void *X, const int incX);
  166. void cblas_zscal(const int N, const void *alpha, void *X, const int incX);
  167. void cblas_csscal(const int N, const float alpha, void *X, const int incX);
  168. void cblas_zdscal(const int N, const double alpha, void *X, const int incX);
  169.  
  170. /*
  171.  * ===========================================================================
  172.  * Prototypes for level 2 BLAS
  173.  * ===========================================================================
  174.  */
  175.  
  176. /* 
  177.  * Routines with standard 4 prefixes (S, D, C, Z)
  178.  */
  179. void cblas_sgemv(const enum CBLAS_ORDER order,
  180.                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
  181.                  const float alpha, const float *A, const int lda,
  182.                  const float *X, const int incX, const float beta,
  183.                  float *Y, const int incY);
  184. void cblas_sgbmv(const enum CBLAS_ORDER order,
  185.                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
  186.                  const int KL, const int KU, const float alpha,
  187.                  const float *A, const int lda, const float *X,
  188.                  const int incX, const float beta, float *Y, const int incY);
  189. void cblas_strmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  190.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  191.                  const int N, const float *A, const int lda, 
  192.                  float *X, const int incX);
  193. void cblas_stbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  194.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  195.                  const int N, const int K, const float *A, const int lda, 
  196.                  float *X, const int incX);
  197. void cblas_stpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  198.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  199.                  const int N, const float *Ap, float *X, const int incX);
  200. void cblas_strsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  201.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  202.                  const int N, const float *A, const int lda, float *X,
  203.                  const int incX);
  204. void cblas_stbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  205.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  206.                  const int N, const int K, const float *A, const int lda,
  207.                  float *X, const int incX);
  208. void cblas_stpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  209.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  210.                  const int N, const float *Ap, float *X, const int incX);
  211.  
  212. void cblas_dgemv(const enum CBLAS_ORDER order,
  213.                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
  214.                  const double alpha, const double *A, const int lda,
  215.                  const double *X, const int incX, const double beta,
  216.                  double *Y, const int incY);
  217. void cblas_dgbmv(const enum CBLAS_ORDER order,
  218.                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
  219.                  const int KL, const int KU, const double alpha,
  220.                  const double *A, const int lda, const double *X,
  221.                  const int incX, const double beta, double *Y, const int incY);
  222. void cblas_dtrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  223.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  224.                  const int N, const double *A, const int lda, 
  225.                  double *X, const int incX);
  226. void cblas_dtbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  227.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  228.                  const int N, const int K, const double *A, const int lda, 
  229.                  double *X, const int incX);
  230. void cblas_dtpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  231.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  232.                  const int N, const double *Ap, double *X, const int incX);
  233. void cblas_dtrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  234.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  235.                  const int N, const double *A, const int lda, double *X,
  236.                  const int incX);
  237. void cblas_dtbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  238.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  239.                  const int N, const int K, const double *A, const int lda,
  240.                  double *X, const int incX);
  241. void cblas_dtpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  242.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  243.                  const int N, const double *Ap, double *X, const int incX);
  244.  
  245. void cblas_cgemv(const enum CBLAS_ORDER order,
  246.                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
  247.                  const void *alpha, const void *A, const int lda,
  248.                  const void *X, const int incX, const void *beta,
  249.                  void *Y, const int incY);
  250. void cblas_cgbmv(const enum CBLAS_ORDER order,
  251.                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
  252.                  const int KL, const int KU, const void *alpha,
  253.                  const void *A, const int lda, const void *X,
  254.                  const int incX, const void *beta, void *Y, const int incY);
  255. void cblas_ctrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  256.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  257.                  const int N, const void *A, const int lda, 
  258.                  void *X, const int incX);
  259. void cblas_ctbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  260.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  261.                  const int N, const int K, const void *A, const int lda, 
  262.                  void *X, const int incX);
  263. void cblas_ctpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  264.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  265.                  const int N, const void *Ap, void *X, const int incX);
  266. void cblas_ctrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  267.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  268.                  const int N, const void *A, const int lda, void *X,
  269.                  const int incX);
  270. void cblas_ctbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  271.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  272.                  const int N, const int K, const void *A, const int lda,
  273.                  void *X, const int incX);
  274. void cblas_ctpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  275.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  276.                  const int N, const void *Ap, void *X, const int incX);
  277.  
  278. void cblas_zgemv(const enum CBLAS_ORDER order,
  279.                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
  280.                  const void *alpha, const void *A, const int lda,
  281.                  const void *X, const int incX, const void *beta,
  282.                  void *Y, const int incY);
  283. void cblas_zgbmv(const enum CBLAS_ORDER order,
  284.                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
  285.                  const int KL, const int KU, const void *alpha,
  286.                  const void *A, const int lda, const void *X,
  287.                  const int incX, const void *beta, void *Y, const int incY);
  288. void cblas_ztrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  289.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  290.                  const int N, const void *A, const int lda, 
  291.                  void *X, const int incX);
  292. void cblas_ztbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  293.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  294.                  const int N, const int K, const void *A, const int lda, 
  295.                  void *X, const int incX);
  296. void cblas_ztpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  297.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  298.                  const int N, const void *Ap, void *X, const int incX);
  299. void cblas_ztrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  300.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  301.                  const int N, const void *A, const int lda, void *X,
  302.                  const int incX);
  303. void cblas_ztbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  304.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  305.                  const int N, const int K, const void *A, const int lda,
  306.                  void *X, const int incX);
  307. void cblas_ztpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  308.                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  309.                  const int N, const void *Ap, void *X, const int incX);
  310.  
  311.  
  312. /* 
  313.  * Routines with S and D prefixes only
  314.  */
  315. void cblas_ssymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  316.                  const int N, const float alpha, const float *A,
  317.                  const int lda, const float *X, const int incX,
  318.                  const float beta, float *Y, const int incY);
  319. void cblas_ssbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  320.                  const int N, const int K, const float alpha, const float *A,
  321.                  const int lda, const float *X, const int incX,
  322.                  const float beta, float *Y, const int incY);
  323. void cblas_sspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  324.                  const int N, const float alpha, const float *Ap,
  325.                  const float *X, const int incX,
  326.                  const float beta, float *Y, const int incY);
  327. void cblas_sger(const enum CBLAS_ORDER order, const int M, const int N,
  328.                 const float alpha, const float *X, const int incX,
  329.                 const float *Y, const int incY, float *A, const int lda);
  330. void cblas_ssyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  331.                 const int N, const float alpha, const float *X,
  332.                 const int incX, float *A, const int lda);
  333. void cblas_sspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  334.                 const int N, const float alpha, const float *X,
  335.                 const int incX, float *Ap);
  336. void cblas_ssyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  337.                 const int N, const float alpha, const float *X,
  338.                 const int incX, const float *Y, const int incY, float *A,
  339.                 const int lda);
  340. void cblas_sspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  341.                 const int N, const float alpha, const float *X,
  342.                 const int incX, const float *Y, const int incY, float *A);
  343.  
  344. void cblas_dsymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  345.                  const int N, const double alpha, const double *A,
  346.                  const int lda, const double *X, const int incX,
  347.                  const double beta, double *Y, const int incY);
  348. void cblas_dsbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  349.                  const int N, const int K, const double alpha, const double *A,
  350.                  const int lda, const double *X, const int incX,
  351.                  const double beta, double *Y, const int incY);
  352. void cblas_dspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  353.                  const int N, const double alpha, const double *Ap,
  354.                  const double *X, const int incX,
  355.                  const double beta, double *Y, const int incY);
  356. void cblas_dger(const enum CBLAS_ORDER order, const int M, const int N,
  357.                 const double alpha, const double *X, const int incX,
  358.                 const double *Y, const int incY, double *A, const int lda);
  359. void cblas_dsyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  360.                 const int N, const double alpha, const double *X,
  361.                 const int incX, double *A, const int lda);
  362. void cblas_dspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  363.                 const int N, const double alpha, const double *X,
  364.                 const int incX, double *Ap);
  365. void cblas_dsyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  366.                 const int N, const double alpha, const double *X,
  367.                 const int incX, const double *Y, const int incY, double *A,
  368.                 const int lda);
  369. void cblas_dspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  370.                 const int N, const double alpha, const double *X,
  371.                 const int incX, const double *Y, const int incY, double *A);
  372.  
  373.  
  374. /* 
  375.  * Routines with C and Z prefixes only
  376.  */
  377. void cblas_chemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  378.                  const int N, const void *alpha, const void *A,
  379.                  const int lda, const void *X, const int incX,
  380.                  const void *beta, void *Y, const int incY);
  381. void cblas_chbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  382.                  const int N, const int K, const void *alpha, const void *A,
  383.                  const int lda, const void *X, const int incX,
  384.                  const void *beta, void *Y, const int incY);
  385. void cblas_chpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  386.                  const int N, const void *alpha, const void *Ap,
  387.                  const void *X, const int incX,
  388.                  const void *beta, void *Y, const int incY);
  389. void cblas_cgeru(const enum CBLAS_ORDER order, const int M, const int N,
  390.                  const void *alpha, const void *X, const int incX,
  391.                  const void *Y, const int incY, void *A, const int lda);
  392. void cblas_cgerc(const enum CBLAS_ORDER order, const int M, const int N,
  393.                  const void *alpha, const void *X, const int incX,
  394.                  const void *Y, const int incY, void *A, const int lda);
  395. void cblas_cher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  396.                 const int N, const float alpha, const void *X, const int incX,
  397.                 void *A, const int lda);
  398. void cblas_chpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  399.                 const int N, const float alpha, const void *X,
  400.                 const int incX, void *A);
  401. void cblas_cher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
  402.                 const void *alpha, const void *X, const int incX,
  403.                 const void *Y, const int incY, void *A, const int lda);
  404. void cblas_chpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
  405.                 const void *alpha, const void *X, const int incX,
  406.                 const void *Y, const int incY, void *Ap);
  407.  
  408. void cblas_zhemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  409.                  const int N, const void *alpha, const void *A,
  410.                  const int lda, const void *X, const int incX,
  411.                  const void *beta, void *Y, const int incY);
  412. void cblas_zhbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  413.                  const int N, const int K, const void *alpha, const void *A,
  414.                  const int lda, const void *X, const int incX,
  415.                  const void *beta, void *Y, const int incY);
  416. void cblas_zhpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  417.                  const int N, const void *alpha, const void *Ap,
  418.                  const void *X, const int incX,
  419.                  const void *beta, void *Y, const int incY);
  420. void cblas_zgeru(const enum CBLAS_ORDER order, const int M, const int N,
  421.                  const void *alpha, const void *X, const int incX,
  422.                  const void *Y, const int incY, void *A, const int lda);
  423. void cblas_zgerc(const enum CBLAS_ORDER order, const int M, const int N,
  424.                  const void *alpha, const void *X, const int incX,
  425.                  const void *Y, const int incY, void *A, const int lda);
  426. void cblas_zher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  427.                 const int N, const double alpha, const void *X, const int incX,
  428.                 void *A, const int lda);
  429. void cblas_zhpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
  430.                 const int N, const double alpha, const void *X,
  431.                 const int incX, void *A);
  432. void cblas_zher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
  433.                 const void *alpha, const void *X, const int incX,
  434.                 const void *Y, const int incY, void *A, const int lda);
  435. void cblas_zhpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
  436.                 const void *alpha, const void *X, const int incX,
  437.                 const void *Y, const int incY, void *Ap);
  438.  
  439. /*
  440.  * ===========================================================================
  441.  * Prototypes for level 3 BLAS
  442.  * ===========================================================================
  443.  */
  444.  
  445. /* 
  446.  * Routines with standard 4 prefixes (S, D, C, Z)
  447.  */
  448. void cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
  449.                  const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
  450.                  const int K, const float alpha, const float *A,
  451.                  const int lda, const float *B, const int ldb,
  452.                  const float beta, float *C, const int ldc);
  453. void cblas_ssymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  454.                  const enum CBLAS_UPLO Uplo, const int M, const int N,
  455.                  const float alpha, const float *A, const int lda,
  456.                  const float *B, const int ldb, const float beta,
  457.                  float *C, const int ldc);
  458. void cblas_ssyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  459.                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  460.                  const float alpha, const float *A, const int lda,
  461.                  const float beta, float *C, const int ldc);
  462. void cblas_ssyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  463.                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  464.                   const float alpha, const float *A, const int lda,
  465.                   const float *B, const int ldb, const float beta,
  466.                   float *C, const int ldc);
  467. void cblas_strmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  468.                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
  469.                  const enum CBLAS_DIAG Diag, const int M, const int N,
  470.                  const float alpha, const float *A, const int lda,
  471.                  float *B, const int ldb);
  472. void cblas_strsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  473.                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
  474.                  const enum CBLAS_DIAG Diag, const int M, const int N,
  475.                  const float alpha, const float *A, const int lda,
  476.                  float *B, const int ldb);
  477.  
  478. void cblas_dgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
  479.                  const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
  480.                  const int K, const double alpha, const double *A,
  481.                  const int lda, const double *B, const int ldb,
  482.                  const double beta, double *C, const int ldc);
  483. void cblas_dsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  484.                  const enum CBLAS_UPLO Uplo, const int M, const int N,
  485.                  const double alpha, const double *A, const int lda,
  486.                  const double *B, const int ldb, const double beta,
  487.                  double *C, const int ldc);
  488. void cblas_dsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  489.                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  490.                  const double alpha, const double *A, const int lda,
  491.                  const double beta, double *C, const int ldc);
  492. void cblas_dsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  493.                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  494.                   const double alpha, const double *A, const int lda,
  495.                   const double *B, const int ldb, const double beta,
  496.                   double *C, const int ldc);
  497. void cblas_dtrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  498.                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
  499.                  const enum CBLAS_DIAG Diag, const int M, const int N,
  500.                  const double alpha, const double *A, const int lda,
  501.                  double *B, const int ldb);
  502. void cblas_dtrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  503.                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
  504.                  const enum CBLAS_DIAG Diag, const int M, const int N,
  505.                  const double alpha, const double *A, const int lda,
  506.                  double *B, const int ldb);
  507.  
  508. void cblas_cgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
  509.                  const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
  510.                  const int K, const void *alpha, const void *A,
  511.                  const int lda, const void *B, const int ldb,
  512.                  const void *beta, void *C, const int ldc);
  513. void cblas_csymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  514.                  const enum CBLAS_UPLO Uplo, const int M, const int N,
  515.                  const void *alpha, const void *A, const int lda,
  516.                  const void *B, const int ldb, const void *beta,
  517.                  void *C, const int ldc);
  518. void cblas_csyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  519.                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  520.                  const void *alpha, const void *A, const int lda,
  521.                  const void *beta, void *C, const int ldc);
  522. void cblas_csyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  523.                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  524.                   const void *alpha, const void *A, const int lda,
  525.                   const void *B, const int ldb, const void *beta,
  526.                   void *C, const int ldc);
  527. void cblas_ctrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  528.                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
  529.                  const enum CBLAS_DIAG Diag, const int M, const int N,
  530.                  const void *alpha, const void *A, const int lda,
  531.                  void *B, const int ldb);
  532. void cblas_ctrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  533.                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
  534.                  const enum CBLAS_DIAG Diag, const int M, const int N,
  535.                  const void *alpha, const void *A, const int lda,
  536.                  void *B, const int ldb);
  537.  
  538. void cblas_zgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
  539.                  const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
  540.                  const int K, const void *alpha, const void *A,
  541.                  const int lda, const void *B, const int ldb,
  542.                  const void *beta, void *C, const int ldc);
  543. void cblas_zsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  544.                  const enum CBLAS_UPLO Uplo, const int M, const int N,
  545.                  const void *alpha, const void *A, const int lda,
  546.                  const void *B, const int ldb, const void *beta,
  547.                  void *C, const int ldc);
  548. void cblas_zsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  549.                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  550.                  const void *alpha, const void *A, const int lda,
  551.                  const void *beta, void *C, const int ldc);
  552. void cblas_zsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  553.                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  554.                   const void *alpha, const void *A, const int lda,
  555.                   const void *B, const int ldb, const void *beta,
  556.                   void *C, const int ldc);
  557. void cblas_ztrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  558.                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
  559.                  const enum CBLAS_DIAG Diag, const int M, const int N,
  560.                  const void *alpha, const void *A, const int lda,
  561.                  void *B, const int ldb);
  562. void cblas_ztrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  563.                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
  564.                  const enum CBLAS_DIAG Diag, const int M, const int N,
  565.                  const void *alpha, const void *A, const int lda,
  566.                  void *B, const int ldb);
  567.  
  568.  
  569. /* 
  570.  * Routines with prefixes C and Z only
  571.  */
  572. void cblas_chemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  573.                  const enum CBLAS_UPLO Uplo, const int M, const int N,
  574.                  const void *alpha, const void *A, const int lda,
  575.                  const void *B, const int ldb, const void *beta,
  576.                  void *C, const int ldc);
  577. void cblas_cherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  578.                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  579.                  const float alpha, const void *A, const int lda,
  580.                  const float beta, void *C, const int ldc);
  581. void cblas_cher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  582.                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  583.                   const void *alpha, const void *A, const int lda,
  584.                   const void *B, const int ldb, const float beta,
  585.                   void *C, const int ldc);
  586.  
  587. void cblas_zhemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  588.                  const enum CBLAS_UPLO Uplo, const int M, const int N,
  589.                  const void *alpha, const void *A, const int lda,
  590.                  const void *B, const int ldb, const void *beta,
  591.                  void *C, const int ldc);
  592. void cblas_zherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  593.                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  594.                  const double alpha, const void *A, const int lda,
  595.                  const double beta, void *C, const int ldc);
  596. void cblas_zher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  597.                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  598.                   const void *alpha, const void *A, const int lda,
  599.                   const void *B, const int ldb, const double beta,
  600.                   void *C, const int ldc);
  601.  
  602. void cblas_xerbla(int p, const char *rout, const char *form, ...);
  603.  
  604. __END_DECLS
  605.  
  606. #endif /* __GSL_CBLAS_H__ */
  607.